# from core.celery import celery_app
# from app.auth.tasks import create_order
from app.monitor_logs.tasks import monitor_logs_abnormal_application_notice, monitor_logs_abnormal_bigdata_notice
from app.monitor_doris.tasks import *
from app.tools_jumpserver.tasks import jumpserver_audit_export_data_async
from celery.schedules import crontab
from app.bill.task import *
from app.celery_task.task import *
from app.service_quality.task import *
from app.bigdata.tasks import bigdata_hive_export_data_async, bigdata_kudu_export_data_async, bigdata_impala_export_data_async, \
    bigdata_impala_compute_stats_export_data_async, bigdata_yarn_export_data_async, bigdata_capacity_report_async, \
    bigdata_impala_report_async, bigdata_yarn_report_async, bigdata_cloudera_monitor_async, bigdata_bdl_disk_capacity_info_async


@celery_app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    # 异常应用服务日志告警通知任务, 每隔5分钟跑一次
    #sender.add_periodic_task(crontab(minute=f'*/5'), monitor_logs_abnormal_application_notice.s(), name='abnormal application notice')

    # 异常大数据服务日志告警通知任务, 每隔5分钟跑一次
    #sender.add_periodic_task(crontab(minute=f'*/5'), monitor_logs_abnormal_bigdata_notice.s(), name='abnormal bigdata notice')

    # 异常CDH大数据集群组件服务异常通知任务, 每隔2分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/2'), bigdata_cloudera_monitor_async.s(), name='abnormal bigdata notice')

    # 每天凌晨01点15分同步kudu集群table数据上报
    # sender.add_periodic_task(crontab(minute='0', hour='1'), jumpserver_audit_export_data_async.s(), name='audit report data')

    # 每天凌晨01点同步hive集群table数据上报
    sender.add_periodic_task(crontab(minute='3', hour='1'), bigdata_hive_export_data_async.s(), name='hive report data')

    # 每天凌晨05点同步集群磁盘数据上报
    sender.add_periodic_task(crontab(minute='5', hour='1'), bigdata_bdl_disk_capacity_info_async.s(), name='disk capacity report data')

    # 每天凌晨01点05分同步kudu集群table数据上报
    sender.add_periodic_task(crontab(minute='8', hour='1'), bigdata_kudu_export_data_async.s(), name='kudu report data')

    # 每天凌晨06点00分同步yarn任务数据上报任务
    sender.add_periodic_task(crontab(minute='0', hour='6'), bigdata_yarn_export_data_async.s(), name='yarn job report data')

    # 每天凌晨08点05分同步impala查询数据上报任务
    sender.add_periodic_task(crontab(minute='5', hour='8'), bigdata_impala_export_data_async.s(), name='impala query report data')

    # 每天凌晨08点50分同步impala compute stats分析数据上报任务
    sender.add_periodic_task(crontab(minute='55', hour='8'), bigdata_impala_compute_stats_export_data_async.s(),
                             name='impala compute stats report data')

    # 青鸾大数据集群hive kudu容量邮件通知, 每天09:30分钟跑一次
    sender.add_periodic_task(crontab(minute='30', hour='9'), bigdata_capacity_report_async.s(days=6), name='bigdata capacity email')

    # 青鸾大数据集群impala sql邮件通知, 每天09:30分钟跑一次
    sender.add_periodic_task(crontab(minute='30', hour='9'), bigdata_impala_report_async.s(), name='bigdata impala sql email')

    # 青鸾大数据集群yarn job邮件通知, 每天09:30分钟跑一次
    sender.add_periodic_task(crontab(minute='30', hour='9'), bigdata_yarn_report_async.s(), name='bigdata yarn sql email')

    # WatchDog任务, 每隔5分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/5'), watch_dog.s(), name='watch dog')

    # 每天凌晨3点同步前一天的主机质量数据
    #sender.add_periodic_task(crontab(minute='0', hour='3'), qos_update_host_date_async.s({}), name='qos update host_date')

    # 每天凌晨3点同步前一天的服务质量数据
    sender.add_periodic_task(crontab(minute='0', hour='3'), qos_update_server_date_async.s({}), name='qos update server_date')

    # 每天凌晨2点从k8s集群同步容器服务信息
    sender.add_periodic_task(crontab(minute='0', hour='2'), qos_update_container_server_info_async.s(),
                             name='qos update container_server_info')

    # 每天凌晨2点从阿里云同步主机信息
    # sender.add_periodic_task(crontab(minute='10', hour='2'), qos_update_host_info_async.s(), name='qos update host_info')

    # 每天凌晨2点从阿里云同步磁盘信息
    sender.add_periodic_task(crontab(minute='20', hour='2'), qos_update_host_disk_async.s(), name='qos update host_disk')

    # japi流量统计数据上报, 每隔1分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/1'), qos_japi_traffic_statistics_async.s(), name='qos japi traffic statistics')

    # # japi pv uv数据上报, 每天02:30分钟跑一次
    # sender.add_periodic_task(crontab(minute='25', hour='2'), qos_pv_and_uv_traffic_statistics_async.s(), name='qos pv_and_uv')

    # 每月第3天开始同步上月的账单数据
    sender.add_periodic_task(crontab('0', '0', day_of_month='3'), bill_update_async.s(""), name='bill update async')

    # 每天凌晨2点从oa平台同步工单信息
    sender.add_periodic_task(crontab(minute='25', hour='2'), oa_asset_from_work_order_async.s(""), name='oa asset from work order async')

    # doris中的日志自定义告警通知任务, 每隔5分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/5'), monitor_doris_check_custom.s(), name='doris application log custom alarm')

    # doris中的日志告警通知任务, 每隔5分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/5'), monitor_doris_check_service.s(), name='doris application log service alarm')
    
    # doris中的http日志告警任务, 每隔5分钟跑一次
    sender.add_periodic_task(crontab(minute=f'*/5'), monitor_doris_http_check.s(interval_min=5), name='doris http log alarm')
    
    # doris中的http日志记录任务, 每隔一小时跑一次
    sender.add_periodic_task(crontab(minute=f'0', hour=f'*/1'), monitor_doris_http_record.s(interval_min=60), name='doris http log record')